package com.cnhis.drgs.base;


import com.cnhis.drgs.core.vo.Page;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * Mybatis基数方法列表
 *
 * @author andLevy
 * @date 2017-09-17 16:55:32
 */
public interface BaseMapper<T> {

    /**
     * 查询单选数据
     *
     * @param id 主键
     * @return
     */
    T query(Serializable id);

    /**
     * 根据条件查询列表数据
     *
     * @param map
     * @return
     */
    List<T> queryList(Map<String, Object> map);

    /**
     * 根据条件查询分页数据
     *
     * @param page
     * @return
     */
    List<T> queryPage(Page page);

    /**
     * 查询全表数据
     *
     * @return
     */
    List<T> queryAll();

    /**
     * 插入单条数据
     *
     * @param t
     * @return 受影响的行数
     */
    int insert(T t);

    /**
     * 插入多条数据
     *
     * @param list
     * @return 受影响的行数
     */
    int insertList(List<T> list);

    /**
     * 更新数据
     *
     * @param t
     * @return 受影响的行数
     */
    int update(T t);

    /**
     * 动态更新数据
     *
     * @param t
     * @return 受影响的行数
     */
    int updateDynamic(T t);

    /**
     * 删除单条数据
     *
     * @param id 主键
     * @return 受影响的行数
     */
    int delete(Serializable id);

    /**
     * 根据条件删除数据
     *
     * @param map
     * @return 受影响的行数
     */
    int deleteBy(Map<String, Object> map);

    /**
     * 锁住一条行记录
     *
     * @param id 主键
     */
    void lockRow(Serializable id);

}
